package dao;


import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import model.PreCompra;
import model.Produto;

public class Pre_CompraDAO {
	
	public static int id;
	
	
	
	public boolean insert(PreCompra p){
		
		String sql = "insert into pre_compra(descricao, data) values (?, ?)";
		
		
		try{

			   PreparedStatement prep = ConnectionFactory.getInstance().prepareStatement(sql, java.sql.Statement.RETURN_GENERATED_KEYS);
			   prep.setString (1, p.getStrDescricaoSolicitacao());
			   prep.setString(2, p.getDtDataSolicitacao());
			   
			   
			   prep.executeUpdate();
			   
			   ResultSet rsID = prep.getGeneratedKeys(); 
			   
			   if(rsID.next())  
				   id = rsID.getInt(1);
		
			   insertProdutos(p);

			   return true;
			  
		}catch(SQLException e){
			
			e.printStackTrace();
			return false;
			
		}catch(Exception ex){
			
			ex.printStackTrace();
			return false;
		}
		
		
		
	}
	
	public void insertProdutos(PreCompra p) throws Exception{
		

		String sql = "insert into precompra_possui_produto(codigo_produto, codigo_pre_compra) values (?, ?)";
		
		
		try{
			
			  	
			   PreparedStatement prep = ConnectionFactory.getInstance().prepareStatement(sql);
			   
			   for(Produto prod: p.getListaProdutos()){
				   
				   prep.setString(1, prod.getStrCodigo());
				   prep.setInt(2, id);
				   
				   prep.execute();
   
			   }
	
			   ConnectionFactory.getInstance().close();

	
		}catch(SQLException e){
			
			e.getMessage();
			
			
		}catch(Exception ex){
			
			ex.getMessage();
			
			
		}
		

	
	}
	
	public static ResultSet selectALL(int id) throws Exception, SQLException{
		

		String sql = "select p.codigo, p.descricao, p.valor, p.peso, f.razao_social from produto as p inner join fornecedor as f "
				+ "on f.cnpj = p.cnpj_fornecedor inner join precompra_possui_produto as prepp on prepp.codigo_produto = p.codigo inner join pre_compra as pre"
				+ " on prepp.codigo_pre_compra = pre.codigo where pre.codigo = ?";

		try{

			   PreparedStatement prep = ConnectionFactory.getInstance().prepareStatement(sql);
			   prep.setInt(1, id);

			   ResultSet rs = prep.executeQuery();
			   ConnectionFactory.getInstance().close();
			   
			 return rs;
			   
	
		}catch(SQLException e){
			e.getMessage();
			return null;
			
			
		}catch(Exception ex){
			ex.getMessage();
			return null;
			
			
		}
		

	
	}
	

}
